import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:yysk_app/utils/colors.dart';

/// 自定义视频播放组件（封装 video_player 逻辑）
class CustomVideoPlayer extends StatefulWidget {
  /// 视频源（本地文件路径或网络 URL）
  final String videoSource;

  /// 是否自动播放
  final bool autoPlay;

  /// 是否循环播放
  final bool loop;

  /// 是否显示控制按钮
  final bool showControls;

  /// 播放状态变更回调（可选）
  final ValueChanged<bool>? onPlayStateChanged;

  const CustomVideoPlayer({
    Key? key,
    required this.videoSource,
    this.autoPlay = false,
    this.loop = false,
    this.showControls = true,
    this.onPlayStateChanged,
  }) : super(key: key);

  @override
  _CustomVideoPlayerState createState() => _CustomVideoPlayerState();
}

class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
  /// 视频播放控制器
  late VideoPlayerController _controller;

  /// 当前播放状态（是否播放）
  bool _isPlaying = false;

  @override
  void initState() {
    super.initState();
    _initializeController();
  }

  /// 初始化视频播放控制器
  Future<void> _initializeController() async {
    try {
      // 根据视频源选择控制器初始化方式（本地或网络）
      _controller = VideoPlayerController.network(
        widget.videoSource,
        // 网络视频示例：VideoPlayerController.network(widget.videoSource)
        // 本地视频示例：VideoPlayerController.file(File(widget.videoSource))
      );

      // 配置播放模式（循环、自动播放）
      _controller.setLooping(widget.loop);
      // _controller.setAutoPlay(widget.autoPlay);

      // 异步初始化控制器（等待视频加载完成）
      await _controller.initialize();
      setState(() {
        _isPlaying = _controller.value.isPlaying;
      });

      // 注册播放状态变更监听（可选，用于回调）
      _controller.addListener(() {
        if (mounted) {
          setState(() {
            _isPlaying = _controller.value.isPlaying;
          });
          widget.onPlayStateChanged?.call(_isPlaying);
        }
      });
    } catch (e) {
      // 视频加载失败处理（显示提示或占位图）
      print('Failed to initialize video controller: $e');
      setState(() {
        _isPlaying = false;
      });
    }
  }

  /// 播放/暂停切换
  void _togglePlayPause() {
    if (_controller.value.isPlaying) {
      _controller.pause();
    } else {
      _controller.play();
    }
    setState(() {
      _isPlaying = _controller.value.isPlaying;
    });
  }

  /// 全屏播放
  void _fullScreen() {
    // _controller.setFullscreen(true);
  }

  @override
  Widget build(BuildContext context) {
    if (!_controller.value.isInitialized) {
      return Center(
        child: CircularProgressIndicator(), // 初始化时显示加载动画
      );
    }

    return Stack(
      alignment: Alignment.center,
      children: [
        // 视频显示区域
        AspectRatio(
          aspectRatio: _controller.value.aspectRatio,
          child: VideoPlayer(_controller),
        ),

        // 控制按钮区域（如果开启了控制显示）
        if (widget.showControls)
          Positioned(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: [
                // 播放/暂停按钮
                IconButton(
                  icon: Icon(
                    _isPlaying ? Icons.pause : Icons.play_arrow,
                    size: 60,
                    color: AppColors.fontColor9E,
                  ),
                  onPressed: _togglePlayPause,
                ),

                // 全屏按钮
                // IconButton(
                //   icon: Icon(Icons.fullscreen),
                //   onPressed: _fullScreen,
                // ),

                // 其他控制按钮（如进度条、音量等，可扩展）
                // 例如：IconButton(icon: Icon(Icons.volume_up), onPressed: () {})
              ],
            ),
          ),
      ],
    );
  }

  @override
  void dispose() {
    _controller.dispose(); // 销毁控制器，避免内存泄漏
    super.dispose();
  }
}
